<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>类型化数组</title>
</head>
<body>
  <script>
    // Javascript类型化数组是一种用于处理和操作二进制数据的对象，类型化数组在处理WebGL等需要高性能和大数据量操作的应用中非常有用。
    // 类型化数组和普通Javascript数组不同，类型化数组的每一个元素都是同一类型的二进制数据，这种类型在创建数组时就已经确定了。
    // 作用：常用在处理图像数据、音频数据、视频数据这些方向。对应的API有：WebGL、Canvas API、WebRTC、File API。

    /*
      内存管理方面
        类型化数组：类型化数组直接在一个连续的内存块上操作。这意味着所有的数据都紧密地存储在一个固定大小的缓冲区中，数据访问和修改非常
        高效，因为它们不需要像普通数组那样进行额外的内存引用或分配。
        普通数组：普通数组是动态的，可以容纳不同类型的数据。这使得它们非常灵活，但由于需要动态调整大小和存储多种类型的数据，它们的内存
        管理和访问速度比类型化数组要慢。
      数据类型方面
        类型化数组：类型化数组是强类型的，数组中的每个元素都必须是特定类型的值（如 Int8、Uint8、Float32 等）。这种类型的严格性确保
        了数据的一致性和高效的内存使用。
        普通数组：普通数组是弱类型的，可以包含任意类型的值（如数字、字符串、对象等）。这种灵活性虽然方便，但会导致在进行大量数据处理时
        效率较低。
      操作方法方面
        类型化数组：类型化数组支持一组专门的方法，用于在二进制数据块上进行高效操作。它们不继承自 Array.prototype，因此不具备一些普通
        数组的方法（如 push、pop、splice 等）。
        普通数组：普通数组继承自 Array.prototype，拥有丰富的数组操作方法，可以灵活地添加、删除、修改和遍历数组元素。
    */
    // 创建一个有8个字节的类型化数组
    const int8 = new Uint8Array(8);
    const int16 = new Uint16Array(4);
    const int32 = new Uint32Array(2);
    const float32 = new Float32Array(2);
    const float64 = new Float64Array(1);

    console.log(int8);
    console.log(int16);
    console.log(int32);
    console.log(float32);
    console.log(float64);
  </script>
</body>
</html>